#include <stdio.h>
#include <iostream>
#include "hv/hv.h"
#include "hv/hpath.h"

int main()
{
    printf("file:%s function:%s line:%d\n", __FILE__, __FUNCTION__, __LINE__);
    char exe_filepath[MAX_PATH] = {0};
    char run_dir[MAX_PATH] = {0};

    // 获取hv编译版本
    const char* version = hv_compile_version();

    // 获取可执行文件路径
    get_executable_path(exe_filepath, sizeof(exe_filepath));
    // 获取运行目录
    get_run_dir(run_dir, sizeof(run_dir));

    printf("exe_filepath=%s\n", exe_filepath);
    printf("run_dir=%s\n", run_dir);

    
    //设置日志文件路径
    char log_file[256]= {0};
    snprintf(log_file, 256, "%s/logs", run_dir);
    hv_mkdir_p(log_file);//创建目录
    snprintf(log_file, 256, "%s/logs/%s.log", run_dir, "APP_NAME");
    hlog_set_file(log_file);

    //设置日志等级
    hlog_set_level_by_str("DEBUG");

    //设置日志文件大小。超过大小，则会覆盖，为了不被覆盖可以将大小设置得大一些。
    hlog_set_max_filesize_by_str("1M");

    //设置日志文件保存天数,保存天数之外的日志文件会被删除
    hlog_set_remain_days(3);

    //设置是否立即写磁盘，0表示不立即写。其实是调不调用fflush()
    logger_enable_fsync(hlog, 0);

    // 启动颜色日志，不同等级的日志以不同的颜色输出
    logger_enable_color(hlog, 1);

    //设置日志的回调函数，可以是stdout_logger、stderr_logger、file_logger
    //如果不设置，默认将日志输出到文件中
    //原代码无法同时输出到文件和标准输出
    //logger_set_handler(hlog, stdout_logger);

    // 写日志
    while (1) {
      LOGD("libhv version: %s", version);
      LOGI("libhv version: %s", version);
      LOGW("libhv version: %s", version);
      LOGE("libhv version: %s", version);
      LOGF("libhv version: %s", version);
    }



    std::cout << HPath::exists("/home/ubuntu/workplace/code/mylibhv/test1/Makefile")  << std::endl;
    std::cout << HPath::suffixname("/home/app.txt") << std::endl;

    return 0;
}
